package com.lry.jvm.instructions.base;

import com.lry.jvm.rtda.Frame;
import lombok.Setter;

/**
 * 存储和加载类指令需要根据索引存取局部变量表，索引由单字节操作数给出。
 * 把这类指令抽象成Index8Instruction结构体，
 * 用 Index字段表示局部变量表索引。FetchOperands（）方
 * 法从字节码中 读取一个int8整数，转成uint后赋给Index字段
 */
public abstract class Index8Instruction implements Instruction {

    @Setter
    protected int index;

    @Override
    public void fetchOperands(BytecodeReader reader) {
        this.index = reader.read8();
    }

    @Override
    public abstract void execute(Frame frame) throws Exception;
}